package de.nak.terminumfrageapp.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import de.nak.terminumfrageapp.model.Benutzer;
import de.nak.terminumfrageapp.model.Umfrage;
import de.nak.terminumfrageapp.service.IBenutzerService;
import de.nak.terminumfrageapp.service.IRueckmeldungService;
import de.nak.terminumfrageapp.service.IUmfrageService;

/**
 * 
 * @description Action fuer umfrageList.jsp
 * @author Tim Danker, Jennifer Holster
 *
 */

@SuppressWarnings("serial")
public class ZeigeUmfragenAction extends ActionSupport {
	
	/** Services */
	private IUmfrageService umfrageService;
	private IBenutzerService benutzerService;
	private IRueckmeldungService rueckmeldungService;
	
	/** Variablen */
	private List<Umfrage> eigeneUmfragen;
	private Long gewaehlteUmfrage;
	private List<Umfrage> umfragenMitRueckmeldung;
	private List<Umfrage> umfragenOhneRueckmeldung;
	private Boolean bearbeitenSperren;
	private Boolean rueckmeldenSperren;
	
	public Boolean getBearbeitenSperren() {
		return bearbeitenSperren;
	}

	public void setBearbeitenSperren(Boolean bearbeitenSperren) {
		this.bearbeitenSperren = bearbeitenSperren;
	}

	public Boolean getRueckmeldenSperren() {
		return rueckmeldenSperren;
	}

	public void setRueckmeldenSperren(Boolean rueckmeldenSperren) {
		this.rueckmeldenSperren = rueckmeldenSperren;
	}

	/** Getter und Setter */
	
	public List<Umfrage> getUmfragenOhneRueckmeldung() {
		return umfragenOhneRueckmeldung;
	}

	public void setUmfragenOhneRueckmeldung(
			List<Umfrage> umfragenOhneRueckmeldung) {
		this.umfragenOhneRueckmeldung = umfragenOhneRueckmeldung;
	}

	public IRueckmeldungService getRueckmeldungService() {
		return rueckmeldungService;
	}

	public void setRueckmeldungService(IRueckmeldungService rueckmeldungService) {
		this.rueckmeldungService = rueckmeldungService;
	}

	public Long getGewaehlteUmfrage() {
		return gewaehlteUmfrage;
	}

	public void setGewaehlteUmfrage(Long gewaehlteUmfrage) {
		this.gewaehlteUmfrage = gewaehlteUmfrage;
	}

	public List<Umfrage> getUmfragenMitRueckmeldung() {
		return umfragenMitRueckmeldung;
	}

	public void setUmfragenMitRueckmeldung(List<Umfrage> umfragenMitRueckmeldung) {
		this.umfragenMitRueckmeldung = umfragenMitRueckmeldung;
	}

	public IUmfrageService getUmfrageService() {
		return umfrageService;
	}

	public void setUmfrageService(IUmfrageService umfrageService) {
		this.umfrageService = umfrageService;
	}

	public IBenutzerService getBenutzerService() {
		return benutzerService;
	}

	public void setBenutzerService(IBenutzerService benutzerService) {
		this.benutzerService = benutzerService;
	}

	public List<Umfrage> getEigeneUmfragen() {
		return eigeneUmfragen;
	}

	public void setEigeneUmfragen(List<Umfrage> eigeneUmfragen) {
		this.eigeneUmfragen = eigeneUmfragen;
	}

	/**
	 * @descrption listet alle Umfragen (eigene, teilgenommene und offene) auf
	 * @return "SUCCESS" oder "INPUT"
	 * @throws Exception
	 */
	public String zeigeUmfragen() throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpSession session = request.getSession();

		// Benutzer aus der Session laden
		Benutzer benutzer = benutzerService.benutzerLaden((Long) session
				.getAttribute("benutzerId"));

		// lade eigene Umfragen zu diesem Benutzer
		eigeneUmfragen = umfrageService.ladeEigeneUmfragen(benutzer);

		// lade Umfragen von diesem Benutzer, bei denen er bereits abgestimmt
		// hat
		umfragenMitRueckmeldung = rueckmeldungService
				.ladeUmfragenMitRueckmeldung(benutzer);

		List<Umfrage> alleUmfragen = umfrageService.ladeAlleUmfragen();
		// lade Umfragen von diesem Benutzer, bei denen er noch nicht abgestimmt
		// hat
		umfragenOhneRueckmeldung = rueckmeldungService
				.ladeUmfragenOhneRueckmeldung(benutzer, alleUmfragen);

		if (eigeneUmfragen.isEmpty() == true) {
			bearbeitenSperren = true;
		} else {
			bearbeitenSperren = false;
		}
		
		if (umfragenMitRueckmeldung.isEmpty() == true) {
			if (umfragenOhneRueckmeldung.isEmpty() == true) {
				rueckmeldenSperren = true;
			} else {
				rueckmeldenSperren = false;
			}
		} else {
				rueckmeldenSperren = false;
		}
		
		// UmfrageList anzeigen
		return SUCCESS;
	}
	
	

}
